package com.zijidelu.luframework.infrastructure.persistence.repository.core.base;

import com.zijidelu.luframework.infrastructure.converter.DataConverter;
import com.zijidelu.luframework.infrastructure.persistence.repository.core.criteria.PersistenceContext;
import com.zijidelu.luframework.base.model.DataModel;
import com.zijidelu.luframework.base.model.PO;

/**
 * 数据仓最顶层接口。
 *
 * @author ZIJIDELU
 * @date: 2024/3/21 22:11
 */
public interface Repository<P extends PO, D extends DataModel> {
    /**
     * 获取实体类类型。
     *
     * @return 实体类类型
     */
    Class<P> getPoClass();

    /**
     * 获取DTO类类型。
     *
     * @return DTO类类型
     */
    Class<D> getDtoClass();

    /**
     * 获取转换器。
     *
     * @return 转换器
     */
    DataConverter<P, D> getDataConverter();

    /**
     * 获取持久化上下文。
     *
     * @return 持久化上下文
     */
    PersistenceContext<P> getPersistenceContext();


}
